
#include <bcm2835.h>
#include <stdio.h>
#include <signal.h>
#include "gpio.h"
#include "gpio.c"
#include <sys/types.h>
#include <unistd.h>

#define FILE_NAME  "result.dat"


#define pin	RPI_GPIO_P1_16 //GPIO23

int buzzer_flag=0;

int GPIO_SPK(void);
int main(int argc, char* argv[])
{
     FILE *fp; 
     int ret;
     double max_val;
     int file_flag=1;
    int val;
   
   if (argc>1) {
       file_flag=0;

    }

   
    if (!bcm2835_init())
	    return 1;

   	bcm2835_gpio_fsel(GPIO9,BCM2835_GPIO_FSEL_OUTP);
	bcm2835_gpio_fsel(GPIO11,BCM2835_GPIO_FSEL_OUTP);
	bcm2835_gpio_fsel(GPIO4,BCM2835_GPIO_FSEL_OUTP);
	bcm2835_gpio_fsel(GPIO17,BCM2835_GPIO_FSEL_OUTP);

      bcm2835_gpio_write(GPIO9,LOW);
      bcm2835_gpio_write(GPIO11,LOW);
      bcm2835_gpio_write(GPIO4,LOW);
      bcm2835_gpio_write(GPIO17,LOW);


  if (file_flag==0) {

     val=atoi(argv[1]);
   if (val==1) 

     bcm2835_gpio_write(GPIO9,HIGH);
  else if (val==2) 
   
     bcm2835_gpio_write(GPIO11,HIGH);

  else if (val==3) 

     bcm2835_gpio_write(GPIO4,HIGH);
  else if (val==4)

     bcm2835_gpio_write(GPIO17,HIGH);
 else if (val==0 ) {


      bcm2835_gpio_write(GPIO9,LOW);
      bcm2835_gpio_write(GPIO11,LOW);
      bcm2835_gpio_write(GPIO4,LOW);
      bcm2835_gpio_write(GPIO17,LOW);
  

 } else if (val==5) {

      bcm2835_gpio_write(GPIO9,HIGH);
      bcm2835_gpio_write(GPIO11,HIGH);
      bcm2835_gpio_write(GPIO4,HIGH);
      bcm2835_gpio_write(GPIO17,HIGH);



}

  }




 if (file_flag) {

     fp=fopen(FILE_NAME,"r");
     if (fp==NULL) {

      fprintf(stderr,"open %s error\n",FILE_NAME);
      return 0;
     }
     ret=fscanf(fp,"%lf\n",&max_val);
     if(ret!=1) {
      fprintf(stderr,"format error when eeading %s \n",FILE_NAME);
      fclose(fp);
     }

     printf("%e\n",max_val);

 
   // max_val=2.0;

    if (max_val < 1.5 ) {
   	bcm2835_gpio_write(GPIO9,HIGH);
  
   }else if (max_val >= 1.5 && max_val < 2.0) {

      bcm2835_gpio_write(GPIO11,HIGH);

    } else if (max_val >=  2.0 && max_val<2.5) {
       bcm2835_gpio_write(GPIO4,HIGH);
    } else if (max_val>=2.5) {

       bcm2835_gpio_write(GPIO17,HIGH);
   }
       	
  
   
     fclose(fp);
 }

    return 0;
}





